package code12._enum;

public enum Season {
	// 除注释以外的，第一行必须是枚举的对象定义。枚举对象，也被称为枚举项
	// 枚举项，一般只需定义名称，名称一般是大写，因为该对象是 public static final 修饰的 属性
	// 每一个对象之间以 逗号 分隔, 可以换行。
	SPRING("春天", 3,5),
	SUMMER("夏天", 6,8),AUTUMN("秋天", 9,11),WINTER("冬天", 12,2);
	// 在枚举项名称的后面 通过 () 传入参数，以此调用 对应的有参构造
	
	// 除第一行 用于定义 枚举项 的位置外，和普通类 相同。
	// 可以定义属性，方法等
	private String name;// 季节名
	private int begin;// 季节开始月份
	private int end;// 季节结束月份
	
	// 构造方法是私有的
	// 如果没有无参构造，会自动添加一个无参构造, 仅限没有任何构造方法时。
	// 一般为了防止属性被外部修改，不会提供set方法
	private Season(){
	}
	private Season(String name, int begin, int end) {
		this.name = name;
		this.begin = begin;
		this.end = end;
	}
	public String getName() {
		return name;
	}
	public int getBegin() {
		return begin;
	}
	public int getEnd() {
		return end;
	}
	@Override
	public String toString() {
		return "Season[name="+name+",begin="+begin+",end="+end+"]";
	}
}
